SQlite源码分析

函数u64 floatSwap

          如果说我们需要在一个架构上面实现一个混合浮点数(例如:ARM7)那么我们需要讲低四位字节和高四位字节交换。然后在返回我们的结果。对于大多数硬件架构来说,不需要这样处理。混合浮点数问题在ARM7架构上只会出现在使用GCC时,在ARM7芯片上面不会出现异常。出现这样问题的原因是早期GCC版本在存储两个字的64位浮点数出现错误序列。这个错误一直从早先的GCC版本延伸到今。当然也不能全部归于当前的GCC问题,也可能是仅仅是从过去的编译器中复制出来的错误。在新的GCC版本中会使用不同的应用二进制程序接口来获取正确的混合浮点数的二进制序列。sqlite开发者在ARM7的架构上面编译和运行他们的程序,他们多次使用-DSQLITE_DEBUG来调试代码。根据开发者调试的经验来看在DEBUG模式下,一些断言能够保证混合浮点数的二进制序列是正确的。